资源
正文
Git / GitHub 基础介绍
先导课
什么是 Git / Github
访问 GitHub 加速的方法
- Watt Toolkit
- 瓦特工具箱(Steam++官网) - Watt Toolkit:主要是加速 Steam 用
- dev-sidecar:Releases · docmirror/dev-sidecar
- github、Stack Overflow、npm 加速
GitHub 网站基础介绍
- maboloshi/github-chinese: GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese):油猴插件,汉化 github
- Immersive Translate - Translate Web & PDF - Microsoft Edge Addons:翻译网站的插件,会把翻译的文本附在原文旁边
创建账户
双重身份验证
用户 - Settings - Password and authentication:

现在贡献过代码的用户都必须开启 2FA 了。
Github 目前支持的 2FA:
-
TOTP(一次性验证码 App)
- Google Authenticator
- Microsoft Authenticator
- Authy
- 1Password / Bitwarden 自带 OTP
-
安全密钥(FIDO2 / U2F)硬件设备登录
- YubiKey
- Feitian Key
- Windows Hello、Touch ID 等内置生物认证(部分设备支持)
-
SMS 短信(不能用 +86……)
仓库功能
README / issue / release / PR
在 GitHub 仓库页面右上角的 Watch 按钮,点击可以选择三个级别:
| Watch 类型 | 说明 | 通知内容 |
|---|---|---|
| Not watching(不关注) | 默认状态,不主动接收通知 | 只在你被 @ 提及时收到通知 |
| Releases only(只关注发布) | 只在新 release 发布时通知 | 新 release 时收到通知,commit 不通知 |
| Watching(关注所有活动) | 关注全部动态 | Issue、PR、Discussions,以及部分事件通知,但 commit 不一定都通知 |
GitHub 快捷键
在 任意 GitHub 页面按 ?,就会显示完整可用快捷键列表。
会一个 . 调出仓库对应的 VSCode……
发现工具 寻找灵感
- Explore GitHub:探索与发现 Github 新闻/热榜
- Search:搜索相关项目

GitHub 高级搜索功能
- GitHub · Where software is built:高级搜索,根据
Advanced options得到Advanced search搜索语句
如何下载运行 GitHub 的开源项目
- 直接 Download ZIP
git clone XXX- 找到
Release下载编译后的软件- GitHub Release 通常有两个主要部分:
- Release 名称(Release Name)
- 可以自由命名,例如:
v1.0.0、Initial release、Beta 2 - 命名没有强制规范,但一般遵循 语义化版本控制(SemVer)
- SemVer 格式:
MAJOR.MINOR.PATCH- MAJOR:大版本,破坏性改动
- MINOR:小版本,新增功能,不破坏兼容
- PATCH:修复 bug,不影响功能
- SemVer 格式:
- 可以自由命名,例如:
- 附加的二进制文件 / 源码压缩包(Assets)
- 文件名通常遵循
[项目名]-[版本号]-[平台/架构].[后缀]的形式 - 常见例子:
MyApp-1.2.3-windows-x64.zipMyApp-1.2.3-linux-arm.tar.gzMyApp-1.2.3-macos.dmg
- 文件名通常遵循
- Release 名称(Release Name)
- GitHub Release 通常有两个主要部分:

| 项目 | x86_64(AMD64/x64) | ARM(AArch64) | RISC-V | MIPS |
|---|---|---|---|---|
| 架构类型 | CISC(复杂指令集) | RISC(精简指令集) | RISC(开源指令集) | RISC(经典精简架构) |
| 主要厂商 | Intel、AMD | ARM Ltd.(授权模式)+ 高通/苹果/华为/联发科 | 多家厂商,可自由实现 | 联发科、龙芯(早期)、博通等 |
| 是否开源 | 否 | 否(需要授权) | 是(完全开源) | 否 |
| 性能特点 | 单核性能强、桌面生态最强 | 高能效比、移动设备性能强 | 可裁剪、灵活、适合科研与定制芯片 | 架构简单、成熟但生态老化 |
| 功耗表现 | 高 | 非常低 | 中等(视实现) | 低 |
| 主要运行平台 | Windows、Linux、服务器、桌面电脑 | 手机(Android/iOS)、平板、嵌入式、Apple M 系列电脑 | 嵌入式、科研、 Linux、部分开发板 | 嵌入式老平台、路由器、早期 Linux 设备 |
| 生态与软件支持 | 最强(应用最多、兼容最好) | 强(Android/iOS 主导) | 快速增长(得益于开源) | 减退(被 ARM/RISC-V 取代) |
| 芯片成本 | 较高 | 较低,量大 | 低(无授权费) | 较低 |
| 是否支持 SIMD | SSE/AVX 系列很强 | NEON | RVV(RISC-V Vector) | MSA(较弱) |
| 典型设备 | PC、笔记本、服务器、游戏机 | 手机、平板、物联网、Apple Silicon Mac | ESP32-C3/C6、开发板、AI加速器 | 早期路由器、交换机 |
| 未来趋势 | 稳定但增长缓慢 | 快速增长(尤其在 PC 端) | 未来潜力巨大 | 趋势下降,逐步淡出主流 |
- 看看
About有没有官网地址/演示页面 - 看看
README.md有没有Docker命令直接启动 - 看看
README.md有没有一键部署 - 看看
README.md自行下载编译
Git 与 GitHub 的历史起源
GitHub 基础操作(网站)
装修 GitHub 个人主页
简装修 / 精装修
简装修:在自己主页随意修改

精装修:创建一个名称与自己用户名一致的仓库,编辑其中的 README.md。

README.md 中添加仓库状态:
1 | |
但是现在已经失效了……应该总有等价替代。
可以学习别人的主页的 README.md 来装修自己的主页。
Markdown 语法
创建自己的第一个仓库
选择开源许可证

| 许可证 | 商业使用 | 是否要求开源衍生品(Copyleft) | 是否允许闭源修改 | 特点 / 适用场景 |
|---|---|---|---|---|
| MIT License | ✔️ | ❌ | ✔️ | 最宽松许可之一;只需保留版权声明;广泛用于前端、JS、Python 项目 |
| Apache 2.0 | ✔️ | ❌ | ✔️ | 类似 MIT,但额外提供专利授权保护;适合企业项目 |
| BSD 2-Clause | ✔️ | ❌ | ✔️ | 宽松许可,条款比 MIT 更少 |
| BSD 3-Clause | ✔️ | ❌ | ✔️ | 在 BSD2 基础上禁止用作者名义做宣传 |
| GPLv3 | ✔️ | ✔️ 强制 | ❌(衍生必须开源) | 强 Copyleft;适合希望所有改动必须继续开源的项目 |
| LGPLv3 | ✔️ | ⚠️弱 Copyleft(库链接没问题) | ✔️(仅链接可闭源) | 常用于库(如 C/C++/Java 库),链接可闭源,修改库本身需开源 |
| AGPLv3 | ✔️ | ✔️ 更强制 | ❌ | 最严格的 Copyleft;即使是 SaaS(远程部署)也必须开源 |
| MPL 2.0 | ✔️ | ⚠️ 文件级别开源 | ✔️ | 只要求修改过的文件开源,不要求整个项目;多用于浏览器扩展等 |
| Unlicense | ✔️ | ❌ | ✔️ | 完全进入公共领域(Public Domain),无任何限制 |
| CC0(Creative Commons Zero) | ✔️ | ❌ | ✔️ | 与 Unlicense 类似,常用于文档、素材,而非代码 |
| EPL(Eclipse Public License) | ✔️ | ⚠️弱 Copyleft | ✔️ | Java 生态常用;修改 EPL 文件需开源 |
| Boost License | ✔️ | ❌ | ✔️ | C++ 社区常用,宽松且专为库设计 |
| Zlib License | ✔️ | ❌ | ✔️ | 比 MIT 还简单,C/C++ 项目常见 |
commit 概念
每次 commit 都是仓库的一个快照,都有一个专有的 SHA 值,<> 按钮可以查看当前 commit 时候仓库的状态。

可以创建一个 gist 以存储一个单独的代码文件/代码片段。
Note
GitHub 的 Gist 是 GitHub 提供的一个轻量级代码片段(snippet)分享服务,它既可以用来保存小段代码、配置、笔记,也可以作为一个迷你版本的 Git 仓库。

还可以导出成 HTML 语句便于分享:

Git 分支(网站)
创建 / 修改 Branch
1 | |

-
开发到 C1 时发布到生产环境中
-
开启 feature 分支添加新功能。
-
feature 分支开发到 C3 时,报告 C1 出现 bug,需要立即修复
-
开启 bugfix 分支修复 bug(C4)
-
bug 修复,合并分支 C5,分支回到 main
-
feature 分支开发到 C7 时,开发完成,合并分支给 main(C8)
Pull Request

贡献者开新的分支修改代码后,可以向管理员发起申请合并到主分支(Pull Request),管理员代码审核(Code review)后即可合并分支。
GitHub 是如何工作的
仓库其他功能
github wiki
Note
GitHub Wiki 是 GitHub 为每个仓库提供的文档系统,让你能够在项目中内置一套类似独立网站的文档。它适合写使用说明、设计文档、技术规范、开发计划等,比 README 更系统化。
如:Home · facebook/react-native Wiki
github insight

Note
GitHub Insights = 针对仓库的可视化数据统计工具。
能帮助你分析:
- 谁在贡献?
- 贡献速度如何?
- 代码变化趋势?
- Issue / PR 的处理效率?
- 仓库是否活跃?
对于开源项目或多人协作项目特别有用。
社区规则

| 项目 | 用途 |
|---|---|
| README | 项目介绍、安装使用说明 |
| LICENSE | 开源许可声明,明确代码使用权 |
| CODE OF CONDUCT | 行为准则,规范贡献者行为 |
| CONTRIBUTING | 如何贡献代码、提 Issue、提 PR |
| ISSUE_TEMPLATE | Issue 模板,规范用户反馈 |
| PULL_REQUEST_TEMPLATE | PR 模板,规范提交格式 |
| SECURITY.md | 安全漏洞报告方式 |
| SUPPORT.md | 如何获得帮助、常见问题 FAQ |
Note
作用:
- 提高开源项目专业度
- 让贡献者知道应如何参与
- 降低沟通成本
- GitHub 会标注完成度,用绿色勾选表示已完善
项目统计

Note
“项目统计”不是一个独立标签,而是旗下多项 数据统计功能(一般在 Insights 中)。
通常包含:
- 总贡献者(Contributors)
- Commit 活动(Commit Activity)
- Code Frequency(代码改动频率)
- Punch Card(时段热力图)
安全机器人

可以查看官方文档学习如何配合 Dependabot。
Note
Dependabot Alerts(依赖安全漏洞提醒)
- GitHub 会自动扫描仓库的依赖(如 npm、pip、cargo 等),如果某个依赖被发现有安全漏洞,会发出:
- 安全警告(Security Alert)
- 显示漏洞等级:Low / Moderate / High / Critical
- 给出修复建议(升级到指定版本)
Dependabot Security Updates(自动修复机器人)
-
安全机器人会:
-
自动创建 Pull Request
-
将存在漏洞的依赖升级到安全版本
-
PR 内含完整变更说明与安全报告链接
-
-
你可以选择:
-
自动合并更新
-
手动检查后再合并
-
Code Scanning(代码安全扫描)
-
GitHub 使用 CodeQL 做静态分析:
-
扫描你代码中可能的漏洞
-
如 SQL 注入、XSS、未检查的外部输入等
-
在 PR 中直接提示问题位置
-
Secret Scanning(密钥泄漏检查)
-
如果代码里误提交了:
-
API Key
-
Token
-
Password
-
AWS/Google Cloud 凭证等
-
GitHub 会立即警告你。
Note
总结:
| 文件 / 文件夹 | 位置 | 作用 / 触发功能 |
|---|---|---|
| README.md | 根目录 | 仓库主页说明;Community Standards 必备项 |
| LICENSE / LICENSE.md | 根目录 | 触发 GitHub 自动识别开源协议;Community Standards 必备项 |
| CONTRIBUTING.md | 根目录 | 触发 Contribution 指南入口;Community Standards 推荐项 |
| CODE_OF_CONDUCT.md | 根目录 | 触发 CoC(行为准则)入口;Community Standards 推荐项 |
| SECURITY.md | 根目录 | 定义漏洞报告流程;触发 Security 页面展示;Community Standards 推荐项 |
| SUPPORT.md | 根目录 | 添加“Support”链接;让用户知道如何寻求帮助 |
| README_*.md(多语言) | 根目录 | GitHub 自动识别国际化 README(如 README.zh.md) |
| .github/ISSUE_TEMPLATE/ | .github/ISSUE_TEMPLATE/ |
触发 Issue 模板选择器(多模板) |
| ISSUE_TEMPLATE.md | 根目录或 .github/ |
单一 Issue 模板 |
| PULL_REQUEST_TEMPLATE.md | 根目录或 .github/ |
启用 PR 模板 |
| .github/workflows/ | .github/workflows/ |
触发 GitHub Actions 工作流(CI/CD) |
| .github/dependabot.yml | .github/ |
启用 Dependabot 自动更新依赖 |
| CODEOWNERS | .github/ 或 docs/ 或根目录 |
触发自动 Review 请求;保护分支规则生效 |
| FUNDING.yml | .github/ |
启用“Sponsor”按钮(GitHub Sponsors / Patreon 等) |
| CITATION.cff | 根目录 | 触发“Cite this repository”引用信息 |
| .gitignore | 根目录 | Git 忽略规则(不属于特殊功能,但重要) |
| .gitattributes | 根目录 | 控制 Git 文件行为(换行、LFS、语言统计等) |
| .editorconfig | 根目录 | 触发 IDE 格式化规范(编辑器支持) |
| docs/ | 根目录 | GitHub Pages 可从 docs/ 构建(如果启用) |
| mkdocs.yml / docusaurus.config.js 等文档配置 | 根目录 | 用于自动识别文档框架(不属于 GitHub 功能本身) |
| Gemfile + _config.yml(Jekyll) | 根目录 | GitHub Pages(Jekyll 构建)自动支持 |
| /wiki(独立仓库) | repo.wiki.git | 触发 GitHub Wiki 文档系统 |
github project
GitHub 项目管理

感觉像 TAPD……
Note
GitHub 项目管理是一套 GitHub 内置的任务管理 + 项目看板系统,用于协作开发、需求管理、迭代规划。
它包括:
- Projects(项目/看板)
- Issues(问题/需求)
- Pull Requests(代码合并流程)
- Milestones(里程碑)
- Labels(标签分类)
- Assignees(任务负责人)
- Discussions(讨论区)
- Actions(自动化 CI)
这些组合起来,就形成 GitHub 的项目管理体系。
github discussions
Note
| 项目 | 适合用 Issue | 适合用 Discussions |
|---|---|---|
| 目的 | 报 Bug、跟踪任务 | 提问、讨论、建议、交流 |
| 生命周期 | 明确的「开始-解决-关闭」 | 可以长期开放 |
| 官方性 | 开发流程的一部分 | 社区互动区 |
| 结构 | 有状态、可分配、可链接 PR | 帖子 flow、投票、回答、置顶等 |
类似于围绕项目的论坛。
GitHub Desktop
Github Desktop 安装配置
就是个类似于 Sourcetree 的东西。
.git 文件夹是什么

Note
典型的 .git 目录包含如下内容(实际可能因版本或配置略有变化):
1 | |
objects/(Git 数据库核心)
1 | |
| 类型 | 作用 |
|---|---|
| blob | 存储文件内容 |
| tree | 存储目录结构 |
| commit | 存储提交指针、作者、时间、父节点 |
| tag | 轻量/附注标签对象 |
refs/(引用)
1 | |
保存分支、tag、远程分支等的指针。
logs/(引用操作历史)
1 | |
使用 git reflog 查看 HEAD、分支切换历史时,数据来自此目录。
hooks/(钩子,一般需要用户自定义)
预置多种 hook 脚本(shell),但默认都被 .sample 禁用。
1 | |
可以用于:
- 自动格式化代码(pre-commit)
- 代码检查
- 阻止带敏感信息的 push
- 自动执行脚本
info/(补充信息)
包含:
.git/info/exclude:只对当前仓库有效的忽略文件(类似.gitignore)- 额外元数据(少用)
用于本地忽略不想提交的内容。
Git 的三棵树在 .git 中的对应关系
| 树 | Git 名称 | 物理位置 | 说明 |
|---|---|---|---|
| 工作树 | Working Directory | 仓库根目录 | 你正在编辑的文件 |
| 暂存区 | Index / Stage | .git/index |
git add 后的状态 |
| 提交树 | Repository | .git/objects |
历史记录与内容数据库 |
Git 四个分区的概念

Note
> flowchart LR
A["Workspace
(工作区)"]
B["Staging Area
(暂存区)"]
C["Local Repo
(本地仓库)"]
D["Remote Repo
(远程仓库)"]
A -->|git add| B
B -->|git commit| C
C -->|git push| D
D -->|git fetch/pull| C
C -->|git checkout| A
B -->|git restore| A
| 分区 | 相关命令 | 作用 |
|---|---|---|
| Workspace | checkout, restore, 修改文件 |
文件编辑区 |
| Index(暂存区) | add, rm --cached |
准备提交内容 |
| Local Repository | commit, revert, reset |
Git 历史数据库 |
| Remote Repository | push, fetch, pull |
远端协作 |
Github Desktop 隐藏了暂存区这个概念,但是 sourcetree 没有。
GitHub Desktop 实践 git 基础流程
Desktop 进阶操作
stash
Note
临时保存未完成的工作
- 当你正在修改文件,还没准备好 commit,但必须切换分支或 pull 最新代码时,
git stash可以把当前修改收起来。
保持工作区干净
- 切换分支或执行其他操作时,不会影响当前未完成的工作。
可以多次贮藏
- 每次
stash都会生成一个条目,可以通过stash list查看。
Note
如果你有开发了一半的代码,现在出现一个临时紧急工作,需要切换分支处理。
对于还未提交的改动我们可以做如下处理:
| 操作方法 | git 命令 | 效果 |
|---|---|---|
| commit | git add . git commit -m “commit message” |
工作区文件提交本地分支 |
| stash | git stash | 将改动存储起来 |
| discard | git reset --hard | 抛弃工作区与暂存区的更改 |
| switch | git switch <branch_name> | 直接切换分支,你的本地改动会带到新分支上 |
git 后悔药
reset
撤回提交。
| git 命令 | 效果 |
|---|---|
git reset --soft <commit> |
撤回提交,撤回的更改保留在暂存区和工作目录 |
git reset --mixed <commit> |
撤回提交与暂存区,撤回的更改保留在工作目录 |
git reset --hard <commit> |
撤回提交与暂存区 + 工作目录,不保留任何更改 |
git reset --keep <commit> |
撤回提交与暂存区 + 工作目录,未提交的改动保留在工作目录 |
-
soft = 只撤 commit
-
mixed = 撤 commit+撤 add
-
hard = 撤 commit+撤 add+撤修改(危险)
-
mixed 总是保留工作区的修改;keep 只有在不产生冲突时才保留,否则拒绝 reset。
discard
只撤销文件改动,不改 commit 历史。
revert
生成一个反向的操作抵消上次修改的结果。
amend
修改最后一次提交。
Note
| Git操作 | Git命令 | 使用场景 | 注意事项 |
|---|---|---|---|
| discard | git restore <文件名>(单个文件)git reset --hard(所有文件) |
工作区的修改还未 commit | 舍弃掉工作区修改的文件 |
| reset | git reset <commit ID> |
还原到某个 commit 的状态,舍弃之后的 commit | 如果 reset 已经推送到远端 commit,会造成强制推送,集成分支禁止强推 |
| revert | git revert <commit ID> |
使用一个新的提交抵消某次 commit 的修改 | - |
| amend | git commit --amend |
只能修改最新的一次 commit | 如果 amend 已经推送远端 commit,会造成强制推送,集成分支禁止强推 |
tag

将某个推送标记为重要的标签。
分支合并

merge
graph LR
A["A"] --> B["B"]
B --> C["C (main)"]
B --> D["D (feature)"]
D --> E["E (feature)"]
C --> F["F (merge commit)"]
E --> F
保留完整的分支历史,创建一个新的合并提交。适合需要保留完整开发历史的场景。
rebase
graph LR
A1["A"] --> B1["B"]
B1 --> C1["C (main)"]
B1 --> D1["D (feature)"]
D1 --> E1["E (feature)"]
C1 --> D1_rebase["D'"]
D1_rebase --> E1_rebase["E'"]
将分支的提交移到目标分支的最新提交之后,创建线性历史。使提交历史更清晰,但会改写历史。
git pull --rebase 可以保持提交记录的干净(先拉取提交,再把自己的修改放在当前提交之后)。
squash merge
graph LR
A2["A"] --> B2["B"]
B2 --> C2["C (main)"]
B2 --> D2["D (feature)"]
D2 --> E2["E (feature)"]
C2 --> F2["F (squash commit)"]
将分支上的所有提交压缩成一个提交后合并到主分支。适合清理琐碎的提交历史。
cherry pick
graph LR
A3["A"] --> B3["B"]
B3 --> C3["C (main)"]
B3 --> D3["D (feature)"]
D3 --> E3["E (feature)"]
C3 --> D3_cp["D' (cherry-pick)"]
选择性地将某个提交应用到当前分支。适合只需要特定提交的场景。
VSCode 基础使用
解决合并冲突
多与小组成员沟通,达成一致后解决冲突后再提交。
Github 做开源贡献的基本流程
IDE 里面使用 Git
IDEA 里面使用 Git
IDEA 里面使用 Git 进阶
Git 命令行操作
1 | |
1 | |
Note
| 命令 | 基础说明 | 典型示例 | 高级参数示例(真实常用) |
|---|---|---|---|
clone |
克隆仓库 | git clone https://github.com/user/repo.git |
git clone --depth=1 https://github.com/user/repo.git(浅克隆,加快速度) |
init |
初始化仓库 | git init |
git init --bare(创建裸仓库) |
add |
添加到暂存区 | git add . |
git add -p(交互式添加部分修改) |
mv |
移动/重命名文件 | git mv old new |
— |
restore |
恢复工作区文件 | git restore file |
git restore --staged file(撤销 add) |
rm |
删除文件 | git rm file |
git rm -r --cached folder/(仅从暂存区删除) |
bisect |
二分查找问题提交 | git bisect start |
git bisect run ./test.sh(自动化查 bug) |
diff |
查看差异 | git diff HEAD |
git diff --cached(查看已暂存的 diff) |
grep |
搜索内容 | git grep "TODO" |
git grep -n --ignore-case "error" |
log |
查看提交历史 | git log --oneline |
git log --since="2 weeks ago" --author="Alice" --grep fix --stat |
show |
显示对象内容 | git show abc1234 |
git show HEAD~3:file.txt(查看历史文件内容) |
status |
查看状态 | git status |
git status --ignored(显示被忽略的文件) |
backfill |
补齐缺失对象 | git backfill origin |
—(不常用,无主流高级示例) |
branch |
分支管理 | git branch -a |
git branch -m old new(重命名分支) |
commit |
提交更改 | git commit -m "msg" |
git commit --amend --no-edit(修改上一提交) |
merge |
合并分支 | git merge feature |
git merge --squash feature(把多个提交压成一个) |
rebase |
变基 | git rebase main |
git rebase -i HEAD~5(交互式编辑多个提交) |
reset |
重置 HEAD | git reset --hard HEAD~1 |
git reset --soft HEAD~1(保留工作区+暂存区) |
switch |
切换分支 | git switch dev |
git switch -c new-feature(创建并切换) |
tag |
标签操作 | git tag v1.0 |
git tag -a v1.0 -m "Release"(带注释的标签) |
fetch |
拉取但不合并 | git fetch origin |
git fetch --prune(删除远程已不存在的分支) |
pull |
拉取并合并 | git pull |
git pull --rebase(先 rebase 再更新) |
push |
推送代码 | git push origin main |
git push --force-with-lease(安全强推) |
Git LFS 大文件系统
git 不太适合存放大型文件,如果上传单个超过 100 MB 的大文件会被阻止,除非开启 Git LFS。

Note
适合以下场景:
- 游戏/设计行业:大量图片、贴图、音频、模型文件
- 视频项目:编辑素材动辄几百 MB
- 机器学习:模型权重(.h5, .pt, .onnx)
- 前端/多媒体项目:大体积静态资源
凡是单文件 > 50MB 的情况,都应该考虑用 LFS。
GitHub 普通文件超过 100MB 就无法 push,也会强制你使用 LFS。
开启并追踪某个仓库中的所有 .mp4 文件:
1 | |
这个服务并不是免费的,能不用就不用。

Github Action
Github Action 基础概念
Note
GitHub Actions 是 GitHub 官方提供的自动化 CI/CD 平台。
只要你的仓库发生变化,就能自动执行你定义好的脚本,比如:
- 自动构建前端项目
- 自动运行测试
- 自动部署到服务器 / Vercel / GitHub Pages
- 自动打包发布 Release
- 自动执行定时任务(像 CRON)
- 自动给 Issue/PR 添加标签、检查代码风格等
它的核心思想:把你平时要自己执行的命令,交给 GitHub 帮你自动跑。